home *** CD-ROM | disk | FTP | other *** search
/ Software Vault: The Gold Collection / Software Vault - The Gold Collection (American Databankers) (1993).ISO / cdr01 / halcn305.zip / GSDMO_23.PAS < prev    next >
Pascal/Delphi Source File  |  1993-05-02  |  3KB  |  106 lines

  1. program GSDMO_23;
  2. {------------------------------------------------------------------------------
  3.                                DBase Filters
  4.  
  5.        Copyright (c)  Richard F. Griffin
  6.  
  7.        06 February 1993
  8.  
  9.        102 Molded Stone Pl
  10.        Warner Robins, GA  31088
  11.  
  12.        -------------------------------------------------------------
  13.        This program demonstrates how the programmer may set filters to
  14.        determine what records to read from the file.
  15.  
  16.        The program will assign the routine FilterName as a filter for
  17.        GSDMO_23.DBF by using SetFilterThru(FilterName).  This routine
  18.        will return true if the record's LASTNAME field begins with a
  19.        letter lower than 'M'.
  20.  
  21.        After listing all names that are alphabetically less than M, the
  22.        filter is turned 'off' by resetting it to its default routine by
  23.        SetFilterThru(DefFilterCk).  The file is then listed to show all
  24.        records.
  25.  
  26.        Note that SetFilterThru should not be called until a file has been
  27.        assigned to the selected file area through Use.  If no file has
  28.        been assigned, Error 1008, Object is not initialized in file area,
  29.        will halt the program.
  30.  
  31.        New procedures/functions introduced are:
  32.  
  33.                  SetFilterThru
  34.  
  35. -------------------------------------------------------------------------------}
  36.  
  37. uses
  38.    GSOB_Var,
  39.    GSOB_Gen,
  40.    GSOBShel,
  41.    {$IFDEF WINDOWS}
  42.       WinCRT;
  43.    {$ELSE}
  44.       CRT;
  45.    {$ENDIF}
  46.  
  47. {-----------------------------------------------------------------------------}
  48. {$F+}                   {Filter Routine}
  49. Function FilterName: boolean;
  50. var
  51.    b : boolean;
  52.    n : string;
  53. begin
  54.    n := FieldGet('LASTNAME');
  55.    b := n < 'M';
  56.    FilterName := b;
  57. end;
  58. {$F-}                   {End Far Calls}
  59. {-----------------------------------------------------------------------------}
  60.  
  61. var
  62.    ch : char;
  63.  
  64. begin
  65.    ClrScr;
  66.  
  67.    if not FileExist('GSDMO_23.DBF') then
  68.    begin
  69.       writeln('Creating GSDMO_23.DBF');
  70.       MakeTestData(3,'GSDMO_23', 20, false);      {Make a dBase III file}
  71.       writeln('GSDMO_23.DBF Created');
  72.    end;
  73.  
  74.    Select(1);
  75.    Use('GSDMO_23');
  76.    SetFilterThru(FilterName);
  77.    GoTop;
  78.    while not dEOF do
  79.    begin
  80.       writeln(FieldGet('LASTNAME'),' ',
  81.               FieldGet('FIRSTNAME'),'  ',
  82.               RecNo);
  83.       Skip(1);
  84.    end;
  85.  
  86.    writeln;
  87.    writeln('Now to turn off filtering.  Press any key');
  88.    ch := ReadKey;
  89.  
  90.    SetFilterThru(DefFilterCk);
  91.    GoTop;
  92.    while not dEOF do
  93.    begin
  94.       writeln(FieldGet('LASTNAME'),' ',
  95.               FieldGet('FIRSTNAME'),'  ',
  96.               RecNo);
  97.       Skip(1);
  98.    end;
  99.  
  100.  
  101.    CloseDataBases;
  102. end.
  103.  
  104.  
  105.  
  106.